// basicnpc.txt
// A very simple, naive text. Creature attacks anything it hates nearby.
// Once it has won, it returns to its home.
// Memory Cells:
//   Cell 0 - How creature moves.
//     0 - If 0, wander randomly. 
//     1 - Stands still until a target appears.
//     2 - Completely immobile, even if target appears.
//   Cell 1,2 - Stuff done flag. If both 0, nothing. Otherwise when this 
//     is killed, set to 1. (Example: If cell 1 is 3 and cell 2 is 5, when
//     creature is killed, sets SDF(3,5) to 1.)
//   Cell 3 - Dialogue node to start with if talked to. if left at 0, this
//     character doesn't talk.

begincreaturescript;

variables;

short i,j,target;

body;

beginstate INIT_STATE;
	if (get_memory_cell(0) == 2)
		set_mobility(ME,0);
		
	set_name(ME,"Steven");
	set_char_dialogue_pic(ME,1945,0);
	
	change_spell_level(ME,0,1,-3);
	change_spell_level(ME,0,2,-3);
	change_spell_level(ME,0,3,-3);
	change_spell_level(ME,0,6,-2);
	change_spell_level(ME,0,8,-2);
	change_spell_level(ME,0,10,-2);
	
	break;

beginstate DEAD_STATE;
	// Set the appropriate stuff done flag for this character being dead
	j = (get_flag(250,1));
	
	if(get_flag(250,0) == 1) { //IF GOOD
		set_char_status(j,1,10,1,1);
		change_pc_skill_pts(j,3);
		message_dialog("As the leader of the invaders falls to Imperial steel, you suddenly feel more confident, stronger, more assured. Did these glorified brigands really think they could defeat the Empire?!","");	
	}

	if((get_flag(250,0) == 1) && (who_hit_me() != j)) { //If evil, didnt kill him
		message_dialog("You watch as Steven falls to the attacks of the Imperial soldiers. Your cause has been dealt dealt a serious blow, and your position in New Haven is seriously compromised without a leader. You quickly flee to the nearest exit.","GAME OVER.");
		end_scenario(0);
		}
	
	if((get_flag(250,0) == 1) && (who_hit_me() == j)) { //If good, did kill him
		message_dialog("You watch on as Steven falls to your blow. As you wipe your sword, one of the Imperial soldiers takes advantage of your turned back and attacks.","You just manage to parry his blow when more soldiers pile on to attack. You don't stand a chance...");
		kill_char(1000,3,0);
		}
	
break;

beginstate START_STATE; 
	// if I have a target for some reason, go attack it
	if (target_ok()) {
		if (dist_to_char(get_target()) <= 16)
			set_state(3);
			else set_target(ME,-1);
		}
	
	// Look for a target, attack it if visible
	if (select_target(ME,8,0)) {
		do_attack();
		set_state(3);
		}
		
	// Have I been hit? Strike back!
	if (who_hit_me() >= 0) {
		set_target(ME,who_hit_me());
		do_attack();
		set_state(3);
		}
		
	// Otherwise, just peacefully move around. Go back to start, if I'm too far
	// from where I started.
	if ((my_dist_from_start() >= 6) || ((my_dist_from_start() > 0) && (get_memory_cell(0) > 0))) {
		if (get_ran(1,1,100) < 40) 
			return_to_start(ME,1);
		}
		else if (get_memory_cell(0) == 0) {
			fidget(ME,25);
			}

	// if we're in combat and the above didn't give me anything to do, just
	// stop now. Otherwise, game will keep running script, and that eats up CPU time.
	if (am_i_doing_action() == FALSE)
		end_combat_turn();
break;

beginstate 3; // attacking
	if (target_ok() == FALSE)
		set_state(START_STATE);
	do_attack();
break;

beginstate TALKING_STATE;
	if (get_memory_cell(3) == 0) {
		print_str("Talking: It doesn't respond.");
		end();
		}
	begin_talk_mode(get_memory_cell(3));
break;